/*
 * ClientSingle.h
 *
 *  Created on: 06/06/2013
 *      Author: Juliansci
 */

#ifndef CLIENTSINGLE_H_
#define CLIENTSINGLE_H_

#include <string>
#include <list>
#include "../modelo/Juego.h"
#include "../yaml/Builder.h"
#include "../modelo/Personaje.h"
#include "../sonido/AdminSonido.h"

using namespace std;

class ClientSingle {
private:
	string nombrePersonaje, tipoPersonaje, mision, armaUtilizada;
	list<string> listaOponentes;
	Juego* juego;
	Builder* builder;
	string nombreEscenario;
	AdminSonido *adminSonido;

	void crearProtagonista(Escenario* escenario);

public:
	ClientSingle(string,string,string);
	void run();
	void setNombrePersonaje(string nombrePersonaje);
	void setTipoPersonaje(string tipoPersonaje);
	list<string> getListaOponentes();
	void setListaOponentes();
	bool listaOponentesContiene(string nombre);
	void personajeElegido();
	void desbloquearSeleccion();
	string getNombrePersonaje();
	void comprueboStatusDelProtagonista();
	void inicializarBonusEscenario();
	void atacarArma(Personaje*,Casilla*);
	bool actualizarAtacar(Escenario*);
	void atacarEspada(Personaje*, Casilla*);
	void actualizarEntidadesYPersonajesAtacados(Escenario*);
	bool finPartida(Escenario* escenario);
	void inicializarTiposEntidades(map<string,TipoEntidad*> tipos, Escenario*);


};

#endif /* CLIENTSINGLE_H_ */
